#include <stdio.h>

int main() {
    float x1 = 0.1234567890;
    float x2 = 0.1234567891;
    float x3 = 0.1234567892;
    float x4 = 0.1234567893;
    float x5 = 0.1234567894;

    printf("x1: %.17f\n", x1);
    printf("x2: %.17f\n", x2);
    printf("x3: %.17f\n", x3);
    printf("x4: %.17f\n", x4);
    printf("x5: %.17f\n", x5);

    float y1 = 0.00000001234567890;
    float y2 = 0.00000002345678901;
    float y3 = 0.00000003456789012;
    float y4 = 0.00000004567890123;
    float y5 = 0.00000005678901234;
    printf("y1: %.17f\n", y1);
    printf("y2: %.17f\n", y2);
    printf("y3: %.17f\n", y3);
    printf("y4: %.17f\n", y4);
    printf("y5: %.17f\n", y5);

}

// Usage: gcc -o near-zero.out 2.4-near-zero.c && ./near-zero.out 
// Output:
// x1: 0.12345679 104328156
// x2: 0.12345679 104328156
// x3: 0.12345679 104328156
// x4: 0.12345679 104328156
// x5: 0.12345679 104328156
// 说明只能表示到小数点后7位，超过7位的数字就不能保证了，有可能舍去，也有可能舍入。


// y1: 0.00000001234567 915
// y2: 0.00000002345678 851
// y3: 0.0000000345678 8988 // 这个精度少一点只有6位...
// y4: 0.00000004567890 244
// y5: 0.00000005678901 260
// 说明精度并不包括前导0，无论前导0在小数点前还是小数点后，都是不参与精度的，因为其实这多个0其实被指数部分表示了，不参与尾数的表示。